Read Buf

Read Buf

AWK 语言创作者 Dr. Brian Kernighan 的简短采访

这是一篇2022年11月15日,一次对 AWK 语言创作者 Dr. Brian Kernighan 的简短采访。当然 AWK 通常作为一个命令行工具使用,但本质上 AWK 也属于一种编程语言。

Dr. Brian Kernighan

Dr. Brian Kernighan 是一位加拿大计算机科学家,他在贝尔实验室参与了 UNIX 的开发。他与 Dennis Richie 合著了一本关于 C 语言的基础书籍《The C Programming Language》。自2000年以来,他一直在普林斯顿大学教授新一代程序员,并在计算机科学界做出了巨大的贡献。他编写了第一个有记录的“Hello World!”程序,因此我们向他说,“你好,Brian!”。

  • Awk 中是否有一些尚未被采用的新颖想法?

Dr. Kernighan: Awk 的主要概念是关联数组,这在当时是新颖的,但现在大多数语言中都以库函数(如 Java 或 C++ 中的哈希表)或直接在语言中(如 Perl 和 Python 中的字典)的形式出现。关联数组是一种非常强大的构造,可以用来模拟许多其他数据结构。

我想模式-动作范式在当时并不新颖,但也不广泛使用。这是一种组织某些类型计算的有效方法。

  • 在你开发编程语言时,你参考了哪些资料?

Dr. Kernighan: 没有?这是很久以前的事了(想想1970年代),而且我参与的语言都是新的和特殊用途的,所以没有太多现成的资料。当然,一个重要的工具是 Yacc,它使创建和实验语法变得非常容易,并能将其转换为高效的解析器。Lex 在词法层面上也做了同样的事情,再次用一组规则取代了大量的繁琐代码。Lex 当然是模式-动作语言的一个例子;可以说 Yacc 也是如此,所以这是一种良性循环。

  • 对于今天想进入编程语言设计领域的年轻人,你有什么建议?

Dr. Kernighan: 尝试设计和实现小型的、特殊用途的语言。它们非常有趣,通常非常有用,而且比尝试创建 Rust 或 C++ 的替代品要容易得多。寻找那些可以通过合适的语言来描述步骤并实现自动化的任务,然后创建一个简单的编译器和运行时。Jon Bentley 很久以前写了几篇关于这方面的文章,至今仍然具有参考价值。